package org.dromara.xhlj.domain.vo;

import org.dromara.xhlj.domain.XhljConferenceInfo;
import org.dromara.xhlj.domain.XhljActivity;
import org.dromara.xhlj.domain.XhljDataCenter;
import org.dromara.xhlj.domain.XhljEnterprise;
import org.dromara.xhlj.domain.XhljGoods;
import org.dromara.xhlj.domain.XhljHighlight;
import org.dromara.xhlj.domain.XhljMeetingSchedule;
import org.dromara.xhlj.domain.XhljNews;
import org.dromara.xhlj.domain.XhljParticipants;
import org.dromara.xhlj.domain.XhljPoster;
import org.dromara.xhlj.domain.XhljSign;
import org.dromara.xhlj.domain.XhljTopic;
import org.dromara.xhlj.domain.XhljTraffic;
import org.dromara.xhlj.domain.XhljWonderfulImage;
import org.dromara.xhlj.domain.XhljWonderfulVideo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreType;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.common.core.utils.tree.TreeCruxField;
import org.dromara.wx.domain.WxUser;
import org.dromara.wx.domain.vo.WxUserVo;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 大会信息视图对象 xhlj_conference_info
 *
 * @author yf
 * @date 2024-07-28
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XhljConferenceInfo.class)
public class XhljConferenceInfoVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 大会基本信息ID
     */
    @ExcelProperty(value = "大会基本信息ID")
    private Integer conferenceInfoId;
    /**
     * 大会名称
     */
    @ExcelProperty(value = "大会名称")
    private String conferenceName;
    /**
     * 创建人sys_user（大会管理员/活动负责人）
     */
    @ExcelProperty(value = "创建人sys_user")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @Translation(type = SysUser.TRANS_ID_TO_VO, mapper = "createBy")
    private SysUserVo sysUser;
    private Integer createBy;
    /**
     * 大会简介
     */
    @ExcelProperty(value = "大会简介")
    private String conferenceDescriptionContent;
    /**
     * 大会主题标签（0=网络安全，1=AI人工智能，2=大数据分析）
     */
    @ExcelProperty(value = "大会主题标签", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "conference_tags")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "conference_tags", mapper = "conferenceTags")
    private String conferenceTagsDictData;
    private String conferenceTags;
    /**
     * 大会年份
     */
    @ExcelProperty(value = "大会年份")
    private Integer conferenceYear;
    /**
     * 大会轮播图
     */
    @ExcelProperty(value = "大会轮播图")
    private String conferenceBannerImage;
    /**
     * 大会视频
     */
    @ExcelProperty(value = "大会视频")
    private String conferenceVideoFile;
    /**
     * 视频描述
     */
    @ExcelProperty(value = "视频描述")
    private String videoDescription;
    /**
     * 酒店住宿
     */
    @ExcelProperty(value = "酒店住宿")
    private String hotelImage;
    /**
     * 大会场馆
     */
    @ExcelProperty(value = "大会场馆")
    private String venueImage;
    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createTime;
    /**
     * 活动 子列表
     */
    @Translation(type = XhljActivity.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljActivityVo> xhljActivityVoList;
    /**
     * 资料中心 子列表
     */
    @JsonIgnore
    @Translation(type = XhljDataCenter.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljDataCenterVo> xhljDataCenterVoList;
    /**
     * 企业展商 子列表
     */
    @JsonIgnore
    @Translation(type = XhljEnterprise.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljEnterpriseVo> xhljEnterpriseVoList;
    /**
     * 商品 子列表
     */
    @JsonIgnore
    @Translation(type = XhljGoods.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljGoodsVo> xhljGoodsVoList;
    /**
     * 大会亮点 子列表
     */
    @JsonIgnore
    @Translation(type = XhljHighlight.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljHighlightVo> xhljHighlightVoList;
    /**
     * 大会日程 子列表
     */
    @JsonIgnore
    @Translation(type = XhljMeetingSchedule.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljMeetingScheduleVo> xhljMeetingScheduleVoList;
    /**
     * 大会新闻 子列表
     */
    @JsonIgnore
    @Translation(type = XhljNews.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljNewsVo> xhljNewsVoList;
    /**
     * 参会人员 子列表
     */
    @JsonIgnore
    @Translation(type = XhljParticipants.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljParticipantsVo> xhljParticipantsVoList;
    /**
     * 大会海报 子列表
     */
    @JsonIgnore
    @Translation(type = XhljPoster.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljPosterVo> xhljPosterVoList;
    /**
     * 大会签到 子列表
     */
    @JsonIgnore
    @Translation(type = XhljSign.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljSignVo> xhljSignVoList;
    /**
     * 话题 子列表
     */
    @JsonIgnore
    @Translation(type = XhljTopic.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljTopicVo> xhljTopicVoList;
    /**
     * 大会地点交通 子列表
     */
    @JsonIgnore
    @Translation(type = XhljTraffic.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljTrafficVo> xhljTrafficVoList;
    /**
     * 精彩图片 子列表
     */
    @JsonIgnore
    @Translation(type = XhljWonderfulImage.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljWonderfulImageVo> xhljWonderfulImageVoList;
    /**
     * 精彩视频 子列表
     */
    @JsonIgnore
    @Translation(type = XhljWonderfulVideo.TRANS_ID_TO_VO_LIST, mapper = "conferenceInfoId" , other = "conference_info_id")
    private List<XhljWonderfulVideoVo> xhljWonderfulVideoVoList;
}
